Internet or network delivery of application-program-style functionality has become increasingly important. The ubiquitous client-server platform typically requires that the front-end application program code be loaded and installed on the client computers. This requirement, however, is viewed as substantially increasing the installation and maintenance costs associated with computer networks. Moreover, many client operating system platforms are deemed unstable. Web delivery of applications programs would enable the code to be completely maintained on the server-side.
Additionally, there are a number of different business models that are pulling for network delivery of application program functionality. First, it can be used in software sales. A web-based software-sales institution can utilize the Internet, or other public network, to allow customers to “test-drive” the programs and thereby drive sales. A second justification for deployment arises in the thin client/network computer model where the code required for the application-level functionality and user data reside on the server side. In this situation, when the application functionality is required at the thin client, it is provided by the server on an as-needed basis. These servers can even be off-site in an application service provider (ASP) environment. Another justification surrounds the possibility to “rent” programs to users. A large number of potential users may have only limited requirements for certain classes of application programs. Their individual requirements may not justify investment in the typically expensive programs or not justify the costs of client installation. The thought here is to enable these users to rent access to the application programs, preferably via the Internet, to generate new revenue streams for the application software companies. Also, software vendors are becoming more flexible in the terms offered for licensing their software. Servers and clients need to participate in supporting flexible licensing modes, potentially even if the software being licensed does not internally support it.
One solution to providing application program functionality to the client computer via the network involves expanding the functionality of the browser. For example, the term “plug-in” is used to describe a browser code extension. ActiveX and Java are two of the most common extension platforms for the browser.
While the solution to provide application program functionality via the browser is attractive in its simplicity, a number of problems exist under current technology. First, providing sophisticated ActiveX and/or Java functionality is still in its infancy and largely unproven. Further, it ignores the wealth of existing, stable application programs that have been written and are being written to run directly on the operating systems, such as Windows 95/98/NT/2000, Unix, Linux, and Mac OS's.
Related, but limited, solutions attempt to allow potential buyers, for example, to “test drive” the program over the Internet. Typically, one of two techniques have been used. First, the selling institution may allow the potential owner to download a trial-version of the program. This version may have reduced capabilities and/or a limited lifetime. That is, the program is disabled after it has been invoked a set number of times, or after a specified date. Moreover, the process is complex, creating difficulty, often requiring a multi-step process in which the user must accept a download, pick a save as location, watch a download, quit the browser, find the file on the hard drive, run an installer, etc. Another technique is to extend the potential purchaser's browser in some fashion. For example, a demonstration application, often unrelated to the original in terms of application code, can be downloaded that mimic's the operation or graphical user interface of the application program. The problem here, however, is coding these applets can be difficult and/or time consuming and the experience is typically inferior to that offered by the “real” version of the application program.
Systems have been proffered to allow complete use of an application in a restricted mode or under licensing which requires a server to “unlock” the application for a client computer. Most of these systems have only dealt with the problem of restriction of the general license, leaving the problem of distribution unsolved.
Against this backdrop, most modern operating systems allow for the execution of code that is stored remotely from the client computer. The systems allow a client computer to mount a physically remote memory device such as a file server, residing on a server or peer computer, and execute the application program residing there. Typically, however, these capabilities of the operating system are only utilized within an institution where an umbrella of network management exercises control over both the clients and the servers to prevent corruption of data on the server side and configure the client computers to access the server-stored code.